package com.woniu.cq.springboot_mybatisplus_shiro.controller;


import com.woniu.cq.springboot_mybatisplus_shiro.comment.Result;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.subject.Subject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author Klaus
 * @since 2020-09-03
 */
@RestController
//@RequestMapping("/springboot_mybatisplus_shiro/user")
@Slf4j
public class UserController {

    //以下代码为测试Shiro的代码
////////////////////////////////////////////////////

    @GetMapping("bigBoss")
//    @RequiresRoles({"大boss"})//必须有大boss角色才能访问
    @RequiresPermissions("关闭公司")//必须有关闭公司权限才能访问
    public String queryList2(){
        System.out.println("访问专属于大Boss的页面");
        return "访问专属于大Boss的页面";
    }

    @PostMapping("login")
    public Result Login(String account,String password){
        System.out.println("进入登录页面");
        log.info("得到的参数分别为{}:{}",account,password);

        //使用shiro登录
        //得到subject
        Subject currUser = SecurityUtils.getSubject();
        try{
            currUser.login(new UsernamePasswordToken(account,password));
            //AuthenticationException 认证异常
        }catch (AuthenticationException e){
            log.info("登录失败",e);
            return Result.fail("AUTH_ERROR","用户名或密码错误");
        }
        return Result.success();
    }
////////////////////////////////////////////////////


}

